/***
 * 包含主键的UUID
 * 
 * @author Haijun Gao 
 * @date 2016-7-31 上午10:28:30
 * @desp http://www.cnblogs.com/saga5998/
 * @email 573107773@qq.com
 */
package com.smforj.ssm.frame.core.bean;
 
import java.sql.Timestamp;
import java.util.Date;

import com.smforj.ssm.frame.core.dao.domain.Identifiable;
import com.smforj.ssm.frame.core.enums.Status;
 

/****
 * 采用了新的命名规则，数据库字段加了下划线为了兼容mysql sqlserver oracle
 * 
 * 
 * @author Aaron Gao
 * @2018 2018年4月26日
 * 
 *
 */
public abstract class BaseBean implements Identifiable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -6629475602273015237L;
	/***
	 * uuid 为了兼容已有系统的id
	 */
	protected String id;  
	
	protected String create_by;
	
	protected Date create_date;
	
	protected String update_by;
	
	protected Timestamp update_date;
	
	protected Status status; 
	
	private Boolean isdeleted;
	/***
	 * 获取创建作者
	 * @return
	 * @date 2018年4月26日 下午4:38:54
	 */
	public String getCreate_by() {
		return create_by;
	}

	/***
	 * 设置创建作者
	 * @param create_by
	 * @date 2018年4月26日 下午4:39:07
	 */
	public void setCreate_by(String create_by) {
		this.create_by = create_by;
	}
	/***
	 * 获取创建时间
	 * @return
	 * @date 2016-9-8 下午1:01:10
	 */ 
	public Date getCreate_date() {
		if(create_date == null)
			create_date = new Date();
		return create_date;
	}
	/***
	 * 设置创建时间
	 * @param createdate
	 * @date 2016-9-8 下午1:00:57
	 */ 
	public void setCreate_date(Date create_date) {
		this.create_date = create_date;
	}

	/***
	 * 获取更新作者
	 * @return
	 * @date 2018年4月26日 下午4:40:05
	 */
	public String getUpdate_by() {
		return update_by;
	}

	/***
	 * 设置更新作者
	 * @param update_by
	 * @date 2018年4月26日 下午4:39:54
	 */
	public void setUpdate_by(String update_by) {
		this.update_by = update_by;
	}

	/***
	 * 获取更新时间
	 * @return
	 * @date 2018年4月26日 下午4:39:44
	 */
	public Timestamp getUpdate_date() {
		if(update_date == null)
			update_date = new Timestamp(new Date().getTime());
		return update_date;
	}

	/***
	 * 设置更新时间
	 * @param update_date
	 * @date 2018年4月26日 下午4:39:34
	 */
	public void setUpdate_date(Timestamp update_date) {
		this.update_date = update_date;
	} 
	
	/***
	 * 获取主键或uuid
	 */
	@Override 
	public String getId() { 
		return id;
	}

	/***
	 * 设置主键或uuid
	 */
	@Override
	public void setId(String id) { 
		this.id = id;
	} 
	/***
	 * 获取状态 OFF 禁用 ON 启用
	 * @date 2016-9-8 下午1:01:38
	 */
	public Status getStatus() {
		if(status == null)
			status = Status.ON;
		return status;
	}

	/***
	 * 设置状态 OFF 禁用 ON 启用
	 * @param status
	 * @date 2016-9-8 下午1:01:38
	 */
	public void setStatus(Status status) {
		this.status = status;
	} 
	/***
	 * 获取是否删除标志
	 * @return
	 * @date 2016-9-8 下午12:57:39
	 */ 
	public Boolean getIsdeleted() {
		if(isdeleted == null)
			isdeleted = false;
		return isdeleted;
	}
	/***
	 * 设置是否删除
	 * @param isDeleted
	 * @date 2016-9-8 下午12:57:55
	 */ 
	public void setIsdeleted(Boolean isdeleted) {
		this.isdeleted = isdeleted;
	} 
	
	
}
